package mx.ipn.escom.redes.gestionardepartamento.controller;

import java.util.List;

import mx.ipn.escom.redes.equipo.model.Departamento;
import mx.ipn.escom.redes.equipo.model.Empleado;
import mx.ipn.escom.redes.gestionardepartamento.business.DepartamentoBs;
import mx.ipn.escom.redes.gestionarempleado.business.EmpleadoBs;

import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.Results;

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;


@Results({ @Result(name = "equipo", type = "redirectAction", params = {
		"actionName", "gestionar-departamento/new", "namespace",
		"/departamento" }) })
@Namespace("/departamento")
public class GestionarDepartamentoCtrl extends ActionSupport implements
		ModelDriven<Departamento> {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	private Integer idSel;

	private Departamento model;

	private DepartamentoBs departamentoBs;

	private String nombre;

	private List<Departamento> listDepartamento;
	
	private List<Empleado> listJefe;
	
	private EmpleadoBs empleadoBs;

	public String index() {
		listDepartamento = departamentoBs.findAll();
		if (listDepartamento == null || listDepartamento.isEmpty()) {
			addActionMessage(getText("SIN_REGISTRO_DEPARTAMENTOS"));
		}
		return "index";
	}

	public String editNew() {
		listJefe = empleadoBs.findAll();
		if(listJefe.size() == 0){
			addActionError(getText("SIN_REGISTRO_EMPLEADOS"));
		}
		return "editNew";
	}

	public String create() {
		departamentoBs.guardar(model);
		addActionMessage(getText("REGISTRO_DEPARTAMENTO_EXITOSO"));
		return index();
	}

	public String edit() {
		listJefe = empleadoBs.findAll();
		if(listJefe.size() == 0){
			addActionError(getText("SIN_REGISTRO_EMPLEADOS"));
		}
		return "edit";
	}

	public String update() {
		departamentoBs.modificar(model);
		addActionMessage(getText("MODIFICACION_DEPARTAMENTO_EXITOSA"));
		return index();
	}

	public String deleteConfirm() {
		return "deleteConfirm";
	}

	public String destroy() {
		departamentoBs.eliminar(model);
		addActionMessage(getText("ELIMINACION_DEPARTAMENTO_EXITOSA"));
		return index();
	}

	/**
	 * @return the idSel
	 */
	public Integer getIdSel() {
		return idSel;
	}

	/**
	 * @param idSel
	 *            the idSel to set
	 */
	public void setIdSel(Integer idSel) {
		this.idSel = idSel;
		if (this.idSel != null) {
			model = departamentoBs.findById(idSel);
		}
		if (model.getNombre() != null) {
			setNombre(model.getNombre());
		} else {
			setNombre("");
		}
	}

	/**
	 * @return the model
	 */
	public Departamento getModel() {
		if (model == null) {
			model = new Departamento();
		}
		return model;
	}

	/**
	 * @param model
	 *            the model to set
	 */
	public void setModel(Departamento model) {
		this.model = model;
	}

	/**
	 * @return the hardwareBs
	 */
	public DepartamentoBs getDepartamentoBs() {
		return departamentoBs;
	}

	/**
	 * @param hardwareBs
	 *            the hardwareBs to set
	 */
	public void setDepartamentoBs(DepartamentoBs departamentoBs) {
		this.departamentoBs = departamentoBs;
	}

	/**
	 * @return the nombre
	 */
	public String getNombre() {
		return nombre;
	}

	/**
	 * @param nombre
	 *            the nombre to set
	 */
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	/**
	 * @return the listHardware
	 */
	public List<Departamento> getListDepartamento() {
		return listDepartamento;
	}

	/**
	 * @param listHardware
	 *            the listHardware to set
	 */
	public void setListDepartamento(List<Departamento> listDepartamento) {
		this.listDepartamento = listDepartamento;
	}

	/**
	 * @return the listJefe
	 */
	public List<Empleado> getListJefe() {
		return listJefe;
	}

	/**
	 * @param listJefe the listJefe to set
	 */
	public void setListJefe(List<Empleado> listJefe) {
		this.listJefe = listJefe;
	}

	/**
	 * @return the empleadoBs
	 */
	public EmpleadoBs getEmpleadoBs() {
		return empleadoBs;
	}

	/**
	 * @param empleadoBs the empleadoBs to set
	 */
	public void setEmpleadoBs(EmpleadoBs empleadoBs) {
		this.empleadoBs = empleadoBs;
	}

	
	
}
